home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / perl5 / 5.8.7 / Math / BigFloat / Trace.pm
Text File  |  2006-04-25  |  1KB  |  59 lines

  1. #!/usr/bin/perl -w
  2.  
  3. package Math::BigFloat::Trace;
  4.  
  5. require 5.005_02;
  6. use strict;
  7.  
  8. use Exporter;
  9. use Math::BigFloat;
  10. use vars qw($VERSION @ISA $PACKAGE @EXPORT_OK
  11.             $accuracy $precision $round_mode $div_scale);
  12.  
  13. @ISA = qw(Exporter Math::BigFloat);
  14.  
  15. $VERSION = 0.01;
  16.  
  17. use overload;    # inherit overload from BigFloat
  18.  
  19. # Globals
  20. $accuracy = $precision = undef;
  21. $round_mode = 'even';
  22. $div_scale = 40;
  23.  
  24. sub new
  25. {
  26.         my $proto  = shift;
  27.         my $class  = ref($proto) || $proto;
  28.  
  29.         my $value       = shift;
  30.     my $a = $accuracy; $a = $_[0] if defined $_[0];
  31.     my $p = $precision; $p = $_[1] if defined $_[1];
  32.         my $self = Math::BigFloat->new($value,$a,$p,$round_mode);
  33.  
  34. #    remember, downgrading may return a BigInt, so don't meddle with class    
  35. #    bless $self,$class;
  36.  
  37.     print "MBF new '$value' => '$self' (",ref($self),")";
  38.         return $self;
  39. }
  40.  
  41. sub import
  42.   {
  43.   print "MBF import ",join(' ',@_);
  44.   my $self = shift;
  45.  
  46.   # we catch the constants, the rest goes go BigFloat
  47.   my @a = ();
  48.   foreach (@_)
  49.     {
  50.     push @a, $_ if $_ ne ':constant';
  51.     }
  52.   overload::constant float => sub { $self->new(shift); }; 
  53.  
  54.   Math::BigFloat->import(@a);        # need it for subclasses
  55. #  $self->export_to_level(1,$self,@_);        # need this ?
  56.   }
  57.  
  58. 1;
  59.